西门子s7 您所在的位置:网站首页 西门子s7 协议 西门子s7

西门子s7

2023-12-14 04:06| 来源: 网络整理| 查看: 265

西门子s7-200smart PLC通讯协议(TCP)

由于网上找到的大部分指令解析资料都是以1200、300 等为主的指令,并未见到200smart系列,且恰巧项目需要与该plc通讯读写数据。虽然找到一些现有c#的工程代码不过对200smart系列通讯总有些问题,若用opc需要资金成本,故觉定自行开发通讯软件,找时间进行学习指令。

参考文档: 西门子PLC以太网 通讯协议 解析 常用PLC通讯协议 抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析)

主要思路

使用kepwareOPC服务器以及Wireshark网络数据抓包工具实现对s7-200smart PLC通讯指令分析,最终通过软件组合对应指令实现数据读取。

具体实现

先配好OPC服务器,并通过quick client能正确读取到指定内存地址的数据。

根据网上资料显示西门子PLC通讯前需进行两次握手指令,而opc服务器仅在有客户端连接时才会发送指令。故: 1、先启动抓包软件监听与PLC连接的网卡,设置过滤规则只显示TCP协议; 2、启动quick client让opc服务器开始发送指令; 3、关闭quick client,观察抓取到的数据:

注: 本机IP:192.168.1.10 ;PLC:192.168.1.121 抓包软件中通过源IP及目标IP确定指令收发方向,在封包数据中只需观察以下几行数据即可: 数据包 Wireshark软件将数据包及协议进行明显的标识方便能查看到对应数据。

第一次握手数据

本机发送:(红框) 第一次握手 从数据包中可看到上位机发送的指令为

03 00 00 16 11 E0 00 00 00 01 00 C0 01 09 C1 02 02 00 C2 02 02 01

其中每一位的意义说明如下: 握手一指令说明 s7-200smart只需注意倒数第四项Source TSAP和倒数第一项Destination TSAP,分别代表PLC参数中的localTASP和RemotTASP参数,默认为 0x0200 及 0x0201

PLC回复(上图黄框) 第一次握手 回复 从图中可看到回复的指令以及每一位对应意义

03 00 00 16 11 D0 00 01 00 08 00 C0 01 09 C1 02 02 00 C2 02 02 01 第二次握手数据

本机发送: 第二次握手发送 每一位对应如上图,对比资料发现第二次握手数据为固定格式。

03 00 00 19 02 F0 80 32 01 00 00 00 38 00 08 00 00 F0 00 00 01 00 01 00 F0

PLC回复: 第二次握手回复 自行对照

03 00 00 1B 02 F0 80 32 03 00 00 00 38 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0 读取数据

本次测试读取PLC M20区一个字节、Q0区一个字、V0区双字; 注:OPC服务器会将多种读取目标组合成一个指令

本机发送: 读取多组数据 发送的指令为: 发送的指令

上图中从0030行中的“03 00 …”开始至结尾,每一位对应上上图。 此处读取的数据长度为十进制的十六进制显示,例如长度1,表示为0x01,长度4,表示为0x04.

该指令中包含三组读取指令,每组以 12 0A 10 02 ... 开头,后面紧跟两个字节为读取的长度,以字节为单位

PLC回复:

读取回复 依然从0030行的“03 00 …”开始至结尾 每一位对应意义如下图: 发送回复指令说明 由图中可知三组数据依次为:0x00,0x4000,0x00000000

软件介绍判断时可先判断指令中的成功读取标志:0xff然后截取对应长度的数据即可 此处长度表示为 ( 字节长度 x 8 ) 即位的数量,例如:1 指令中为0x08, 长度2在指令中为 0x10 长度4在指令中为0x20



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有